home *** CD-ROM | disk | FTP | other *** search
/ SuperHack / SuperHack CD.bin / CODING / SOUND / CRYS270.ZIP / CRYSLOAD.ASM < prev    next >
Encoding:
Assembly Source File  |  1995-06-26  |  3.2 KB  |  178 lines

  1. ;****************************************************************************
  2. ;*    Module contenant des fonctions DOS de base pour réserver de la
  3. ;*    RAM, ATTENTION toutes ces fonctions sont de type NEAR
  4. ;*
  5. ;* Programmé par Sébastien Granjoux
  6. ;* Commencé le 20/12/94
  7. ;* Modification le 02/01/95
  8.  
  9. IDEAL
  10. P386N
  11.  
  12. PUBLIC    UNLOADMOD
  13.  
  14. INCLUDE "CRYSLOAD.INC"
  15. INCLUDE    "CRYSERR.INC"
  16.  
  17. SEGMENT CSEG PARA PUBLIC USE16 'CODE'
  18.  
  19. ASSUME    cs:CSEG
  20.  
  21. UsedFs    DW    0
  22.  
  23. ;***************************************************************************
  24. ;*      Libère la mémoire prise par la fonction loadmod utilise en ds:di
  25. ;*      l'adresse des instruments et en ds:si l'adresse de la partition
  26.  
  27. PROC    Unloadmod FAR
  28.  
  29.     push    ds
  30.  
  31.     mov    ax,SEG PatternSeg
  32.     mov    ds,ax
  33.     mov     ax,[ds:PatternSeg]
  34.     or    ax,ax
  35.     je    @@not_alloc
  36.     mov    es,ax
  37.     call    freemem
  38. @@not_alloc:
  39.  
  40.     mov    bx,OFFSET Instrument1
  41.     mov    cl,MAX_INST
  42. @@sample:
  43.     mov     ax,[(INSTRUMENT PTR ds:bx).adrseg]
  44.     or    ax,ax
  45.     je      @@no_sample
  46.     mov     es,ax
  47.     call    freemem
  48. @@no_sample:
  49.     add     bx,SIZE INSTRUMENT
  50.     dec    cl
  51.     jne    @@sample
  52.  
  53.     pop    ds
  54.  
  55.     ret
  56.  
  57. ENDP
  58.  
  59. ;**************************************************************************
  60. ;*    ouvre un fichier suivant différent mode
  61. ;*
  62. ;* Entrée:
  63. ;*    CS:BX    adresse du driver de fichier à utiliser
  64. ;*    DS:DX   paramètre pour le driver (généralement nom du fichier)
  65. ;*
  66. ;* Sortie:
  67. ;*    AX    erreur si C=1
  68.  
  69. PROC    open
  70.  
  71.     mov     [cs:UsedFs],bx
  72.     mov    bx,[(FILESYS PTR cs:bx).open]
  73.     jmp    bx
  74. ENDP
  75.  
  76. ;***************************************************************************
  77. ;*    lit des informations dans un fichier
  78. ;*
  79. ;* Entrée:
  80. ;*    CX    nombre d'octet à lire
  81. ;*    DS:DX    pointeur sur le buffer
  82. ;*
  83. ;* Sortie:
  84. ;*    AX    erreur si C=1
  85.  
  86. PROC    read
  87.  
  88.     mov    bx,[cs:UsedFs]
  89.     mov    bx,[(FILESYS PTR cs:bx).read]
  90.     jmp    bx
  91.  
  92. ENDP
  93.  
  94. ;***************************************************************************
  95. ;*    se déplace dans un fichier par rapport à la position courante
  96. ;*
  97. ;* Entrée:
  98. ;*    CX:DX   déplacement dans le fichier
  99. ;*
  100. ;* Sortie:
  101. ;*    AX    erreur si C=1
  102.  
  103.  
  104. PROC    seek
  105.  
  106.     mov    bx,[cs:UsedFs]
  107.     mov    bx,[(FILESYS PTR cs:bx).seek]
  108.     jmp    bx
  109.  
  110. ENDP
  111.  
  112. ;***************************************************************************
  113. ;*    Ferme un fichier
  114. ;*
  115. ;* Sortie:
  116. ;*    AX    erreur si C=1
  117.  
  118. PROC    close
  119.  
  120.     mov    bx,[cs:UsedFs]
  121.     mov    bx,[(FILESYS PTR cs:bx).close]
  122.     jmp    bx
  123.  
  124. ENDP
  125.  
  126.  
  127. ;***************************************************************************
  128. ;*    Reserve de la mémoire
  129. ;*
  130. ;* Entrée:
  131. ;*    BX    nombre de paragraphe à réserver
  132. ;*
  133. ;* Sortie:
  134. ;*    AX    erreur si C=1
  135. ;*    AX    adresse de segment de la zone réservé
  136.  
  137. PROC    allocmem
  138.  
  139.     mov    ah,48h
  140.     int        21h
  141.     ret
  142. ENDP
  143.  
  144. ;***************************************************************************
  145. ;*    Rend un bloc mémoire au système
  146. ;*
  147. ;* Entrée:
  148. ;*    ES    adresse de segment du bloc à rendre
  149. ;*
  150. ;* Sortie:
  151. ;*    AX    erreur si C=1
  152.  
  153. PROC    freemem
  154.  
  155.     mov    ah,49h
  156.     int    21h
  157.     ret
  158.  
  159. ENDP
  160.  
  161. ;**************************************************************************
  162. ;*    Recupère l'adresse du bloc d'environnement
  163. ;*
  164. ;* Sortie
  165. ;*    AX    adresse du bloc d'environnement
  166.  
  167. PROC    getenvadr FAR
  168.  
  169.     mov    ah,62h
  170.     int    21h
  171.     mov    es,bx
  172.     mov    ax,[es:2Ch]
  173.     ret
  174.  
  175. ENDP
  176.  
  177. ENDS
  178. END